#include <iostream>

using namespace std;
int Max(int a,int b)
{
    return a>b?a:b;
}

void swap(int x[],int a,int b)
{
    int temp=x[a];
    x[a]=x[b];
    x[b]=temp;
}

int cmp(int x[],int p,int n)
{
    if(p*2+1>n)
    {
        if(x[p]<x[p*2])
        {
            swap(x,p,p*2);
            return p*2;
        }
    }
    else
    {
        if(x[p*2+1]>x[p*2])
        {
            if(x[p]<x[p*2+1])
            {
                swap(x,p,p*2+1);
                return p*2+1;
            }
        }
        else
        {
            if(x[p]<x[p*2])
            {
                swap(x,p,p*2);
                return p*2;
            }
        }
    }
    return p;
}

void sort(int x[],int n)
{
    for(int i=n/2;i>=1;i--)
    {
        int p=i;
        while(p<=n/2)
        {
            int newp=cmp(x,p,n);
            if(newp==p)break;
            p=newp;
        }
    }
}




int main() {
    int n;
    cin>>n;
    int x[n+1];
    for(int i=1;i<=n;i++)
    {
        cin>>x[i];
    }
    sort(x,n);
    for(int i=n;i>1;i--)
    {
        swap(x,1,i);
        int p=1;
        while(p<=(i-1)/2)
        {
            int newp=cmp(x,p,i-1);
            if(newp==p)break;
            p=newp;
        }
    }

    for(int i=1;i<=n;i++)
    {
        cout<<x[i]<<" ";
    }
    return 0;
}
